package com.tianze.tzkf.net;


import com.tianze.tzkf.bean.BannerListBean;
import com.tianze.tzkf.bean.BindSmilePayBean;
import com.tianze.tzkf.bean.CheckPwdBean;
import com.tianze.tzkf.bean.GetVersionBean;
import com.tianze.tzkf.bean.GetWxpayFaceAutoInfoBean;
import com.tianze.tzkf.bean.OrderListBean;
import com.tianze.tzkf.bean.PayingWithFaceReplyBean;
import com.tianze.tzkf.bean.SimleFaceReplyBean;
import com.tianze.tzkf.bean.SmileAuthTokenBean;
import com.tianze.tzkf.bean.StatisticsBean;
import com.tianze.tzkf.bean.Token;

import java.util.Map;

import io.reactivex.Observable;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.QueryMap;

/**
 * Created by Zcyang on 2018/7/25.
 */

public interface RetrofitService {

    // 注解里传入 网络请求 的部分URL地址
    // Retrofit把网络请求的URL分成了两部分：一部分放在Retrofit对象里，另一部分放在网络请求接口里
    // 如果接口里的url是一个完整的网址，那么放在Retrofit对象里的URL可以忽略
    // 采用Observable<...>接口
    // getCall()是接受网络请求数据的方法


    /**
     * 登录注册
     * @param map
     * @return
     */
    //登录
    @FormUrlEncoded
    @POST(Api.LOGIN)
    Observable<Token> login(@FieldMap Map<String, String> map);

    //首页轮播图
    @FormUrlEncoded
    @POST(Api.BANNER_LIST)
    Observable<BannerListBean> getBannerList(@FieldMap Map<String, String> map);

    //验证登录接口
    @FormUrlEncoded
    @POST(Api.CHECK_PASSWORD)
    Observable<CheckPwdBean> checkPassword(@FieldMap Map<String, String> map);

    //收款/退款 统计
    @FormUrlEncoded
    @POST(Api.GET_STATISTICS)
    Observable<StatisticsBean> getStatistics(@FieldMap Map<String, String> map);

    //交易列表
    @FormUrlEncoded
    @POST(Api.ORDER_LIST)
    Observable<OrderListBean> getOrderList(@FieldMap Map<String, String> map);

    //获取帐号绑定的刷脸支付设备
    @GET(Api.GET_SMILE_PAY_NUMBER)
    Observable<BindSmilePayBean> getSmilePayNumber(@QueryMap Map<String,String> map);

    //设置硬件设备在线
    @FormUrlEncoded
    @POST(Api.SET_DEVICE_ON_LINE)
    Observable<Token> setDeviceOnLine(@FieldMap Map<String, String> map);

    //获取刷脸支付需要的密钥和授权token
    @FormUrlEncoded
    @POST(Api.GET_SMILE_AUTH_TOKEN)
    Observable<SmileAuthTokenBean> getSmileAuthToken(@FieldMap Map<String, String> map);

    //统一刷脸支付接口
    @FormUrlEncoded
    @POST(Api.SMILE_PAY)
    Observable<PayingWithFaceReplyBean> smilePay(@FieldMap Map<String, String> map);

    //统一刷脸预授权接口
    @FormUrlEncoded
    @POST(Api.SmileFundAuth)
    Observable<SimleFaceReplyBean> smileFreeze(@FieldMap Map<String, String> map);

    //版本更新说明
    @FormUrlEncoded
    @POST(Api.GET_Version)
    Observable<GetVersionBean> getVersion(@FieldMap Map<String, String> map);

    //统一刷脸支付接口
    @FormUrlEncoded
    @POST(Api.getWxpayFaceAuthInfo)
    Observable<GetWxpayFaceAutoInfoBean> getWxpayFaceAuthInfo(@FieldMap Map<String, String> map);


}
